diff --git a/doc/contributions.txt b/doc/contributions.txt
index 8c6bd5e0feaed7a18a1b158cab781025028f4867..c8125c675fbfa6e1448b8005b23668d019c7bb7a 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -517,6 +517,7 @@ Ringo Tuxing
 Robin Cornelius
 	SNOW-108
 	SNOW-204
+	SNOW-484
 	VWR-2488
 	VWR-9557
 	VWR-11128
diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
index f4dc3b927ba3d3beed513011b1f6f10c6980af35..7bc9e97eb16ac858b3df1268f089c45aae147694 100644
--- a/indra/llcharacter/llkeyframemotion.cpp
+++ b/indra/llcharacter/llkeyframemotion.cpp
@@ -1248,6 +1248,12 @@ BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp)
 		return FALSE;
 	}
 
+	if(mJointMotionList->mEmoteName==mID.asString())
+	{
+		llwarns << "Malformed animation mEmoteName==mID" << llendl;
+		return FALSE;
+	}
+
 	//-------------------------------------------------------------------------
 	// get loop
 	//-------------------------------------------------------------------------
diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp
index 809a626c93110eb406e1770d704af65c3e0975f6..e0b56b7973ff22e19fa9b177f03d583bf57ea4ef 100644
--- a/indra/llcommon/llqueuedthread.cpp
+++ b/indra/llcommon/llqueuedthread.cpp
@@ -428,9 +428,11 @@ S32 LLQueuedThread::processNextRequest()
 		llassert_always(req->getStatus() == STATUS_QUEUED);
 		break;
 	}
+	U32 start_priority = 0 ;
 	if (req)
 	{
 		req->setStatus(STATUS_INPROGRESS);
+		start_priority = req->getPriority();
 	}
 	unlockData();
 
@@ -439,8 +441,7 @@ S32 LLQueuedThread::processNextRequest()
 	// safe to access req.
 	if (req)
 	{
-		// process request
-		U32 start_priority = req->getPriority();
+		// process request		
 		bool complete = req->processRequest();
 
 		if (complete)
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 28125ccaaf32fc4fde521578c8ab6e3aa51a10a7..673631f99ad7ec5fee6539218853027d900ecf61 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -40,8 +40,6 @@
 #include "llfocusmgr.h"
 #include "lllocalcliprect.h"
 
-#include "lltrans.h"
-
 #include "boost/bind.hpp"
 
 static const S32 DRAGGER_BAR_MARGIN = 4;
@@ -74,7 +72,6 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
 {
 	initNoTabsWidget(params.no_matched_tabs_text);
 
-	mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());
 	mSingleExpansion = params.single_expansion;
 	if(mFitParent && !mSingleExpansion)
 	{
@@ -389,7 +386,7 @@ void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
 {
 	LLTextBox::Params tp = tb_params;
 	tp.rect(getLocalRect());
-	mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());
+	mNoMatchedTabsOrigString = tp.initial_value().asString();
 	mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
 }
 
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index d51498f6d1e93f9140fd9f2c8dcbe05dd0028e2c..1c32f332900e33d94f95866f5fe0428b73ce9abf 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -11857,5 +11857,16 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>TipToastMessageLineCount</key>
+    <map>
+      <key>Comment</key>
+      <string>Max line count of text message on tip toast.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>10</integer>
+    </map>
 </map>
 </llsd>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 43f6be42b660293d22c45eddbe36ff056f7f14c9..a7d90ab8d396d840931e96a53da452b254287783 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -995,7 +995,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
 			{
 				removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1), false);
 			}
-			addCOFItemLink(item_to_wear, do_update);
+			addCOFItemLink(item_to_wear, do_update, cb);
 		} 
 		break;
 	case LLAssetType::AT_BODYPART:
@@ -2179,17 +2179,19 @@ void LLAppearanceMgr::updateIsDirty()
 	}
 	else
 	{
+		LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK);
+
 		LLInventoryModel::cat_array_t cof_cats;
 		LLInventoryModel::item_array_t cof_items;
-		gInventory.collectDescendents(cof, cof_cats, cof_items,
-									  LLInventoryModel::EXCLUDE_TRASH);
+		gInventory.collectDescendentsIf(cof, cof_cats, cof_items,
+									  LLInventoryModel::EXCLUDE_TRASH, collector);
 
 		LLInventoryModel::cat_array_t outfit_cats;
 		LLInventoryModel::item_array_t outfit_items;
-		gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items,
-									  LLInventoryModel::EXCLUDE_TRASH);
+		gInventory.collectDescendentsIf(base_outfit, outfit_cats, outfit_items,
+									  LLInventoryModel::EXCLUDE_TRASH, collector);
 
-		if(outfit_items.count() != cof_items.count() -1)
+		if(outfit_items.count() != cof_items.count())
 		{
 			// Current outfit folder should have one more item than the outfit folder.
 			// this one item is the link back to the outfit folder itself.
@@ -2197,16 +2199,6 @@ void LLAppearanceMgr::updateIsDirty()
 			return;
 		}
 
-		//getting rid of base outfit folder link to simplify comparison
-		for (LLInventoryModel::item_array_t::iterator it = cof_items.begin(); it != cof_items.end(); ++it)
-		{
-			if (*it == base_outfit_item)
-			{
-				cof_items.erase(it);
-				break;
-			}
-		}
-
 		//"dirty" - also means a difference in linked UUIDs and/or a difference in wearables order (links' descriptions)
 		std::sort(cof_items.begin(), cof_items.end(), sort_by_linked_uuid);
 		std::sort(outfit_items.begin(), outfit_items.end(), sort_by_linked_uuid);
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 3275d784a301e8ed963672f2dcc06fb7ccaefee6..99156b9d9df3fefa3ab04939161597b00497eddf 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -211,7 +211,7 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
 void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name)
 {
 	LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL;
-	LLAvalineListItem* item = new LLAvalineListItem;
+	LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false);
 	item->setAvatarId(item_id, session_id, true, false);
 	item->setName(item_name);
 
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 6897f4ee8e849ddc63455c3310bf88b1f91c03be..2826899cb058d0713c253dbae643e58dd70ac203 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -1886,7 +1886,7 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data)
 
 	if("end" == action)
 	{
-		LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
+		LLScriptFloaterManager::instance().removeNotification(getSessionId());
 	}
 }
 
@@ -1969,7 +1969,7 @@ void LLInvOfferChiclet::onMenuItemClicked(const LLSD& user_data)
 
 	if("end" == action)
 	{
-		LLScriptFloaterManager::instance().onRemoveNotification(getSessionId());
+		LLScriptFloaterManager::instance().removeNotification(getSessionId());
 	}
 }
 
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 55eb543f5f3c426b6b6bce99e78786044e68314d..3944fa53c9e9eb658736be866afb6b229f6dddd2 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -262,6 +262,7 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; }
 	BOOL needsAutoRename() { return mNeedsAutoRename; }
 	void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; }
+	void setAutoSelectOverride(BOOL val) { mAutoSelectOverride = val; }
 
 	void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; }
 
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index a2b72e7d74ef1081e2a9af31a32a95b944dd0606..21313f9df70ddb6feeaa978780350e0a9271380b 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1022,6 +1022,14 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
 		}
 		else
 		{
+			// IM_SESSION_INVITE means that this is an Ad-hoc incoming chat
+			//		(it can be also Group chat but it is checked above)
+			// In this case mInitialTargetIDs contains Ad-hoc session ID and it should not be added
+			// to Recent People to prevent showing of an item with (???)(???). See EXT-8246.
+			// Concrete participants will be added into this list once they sent message in chat.
+			if (IM_SESSION_INVITE == dialog) return;
+
+			// implemented adding of all participants of an outgoing to Recent People List. See EXT-5694.
 			for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
 				it!=session->mInitialTargetIDs.end();++it)
 			{
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 2d11337955c0f86bf87cddcb9bb6a1138a32858a..f20acbd016a19692c33f32afd14cd0dad7a998f4 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -507,6 +507,19 @@ bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
 	return TRUE;
 }
 
+bool LLIsOfAssetType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	if(mType == LLAssetType::AT_CATEGORY)
+	{
+		if(cat) return TRUE;
+	}
+	if(item)
+	{
+		if(item->getActualType() == mType) return TRUE;
+	}
+	return FALSE;
+}
+
 bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
 {
 	if(mType == LLAssetType::AT_CATEGORY)
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index a6d7fcd956d7e52a10aba9b8ee52db817a19c526..4a7721098d1d327d35bbe6656788eeff8ee48b47 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -174,6 +174,25 @@ class LLIsNotType : public LLInventoryCollectFunctor
 	LLAssetType::EType mType;
 };
 
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLIsOfAssetType
+//
+// Implementation of a LLInventoryCollectFunctor which returns TRUE if
+// the item or category is of asset type passed in during construction.
+// Link types are treated as links, not as the types they point to.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLIsOfAssetType : public LLInventoryCollectFunctor
+{
+public:
+	LLIsOfAssetType(LLAssetType::EType type) : mType(type) {}
+	virtual ~LLIsOfAssetType() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+protected:
+	LLAssetType::EType mType;
+};
+
 class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
 {
 public:
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index b8590d838e10d4ebcc8f6a149e8a1d416f959685..46ebb5478605dd185215c62f935f2548b451bc39 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -1052,7 +1052,7 @@ void LLLocationInputCtrl::changeLocationPresentation()
 		//needs unescaped one
 		LLSLURL slurl;
 		LLAgentUI::buildSLURL(slurl, false);
-		mTextEntry->setText(slurl.getSLURLString());
+		mTextEntry->setText(LLURI::unescape(slurl.getSLURLString()));
 		mTextEntry->selectAll();
 
 		mMaturityButton->setVisible(FALSE);
diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp
index e0658554a4f158ac68d09d45d6f465469c5e4e90..8ba2e6d01c7b6c606344dfe250155c2eb07fc466 100644
--- a/indra/newview/llpanelgenerictip.cpp
+++ b/indra/newview/llpanelgenerictip.cpp
@@ -35,6 +35,7 @@
 
 #include "llpanelgenerictip.h"
 #include "llnotifications.h"
+#include "llviewercontrol.h" // for gSavedSettings
 
 
 LLPanelGenericTip::LLPanelGenericTip(
@@ -45,7 +46,8 @@ LLPanelGenericTip::LLPanelGenericTip(
 
 	childSetValue("message", notification->getMessage());
 
-	// set line max count to 3 in case of a very long name
-	snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
+
+	S32 max_line_count =  gSavedSettings.getS32("TipToastMessageLineCount");
+	snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
 }
 
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 29ce3449d17ef9559b42f7fa556e82fb04df8bef..3e12f0ba9aae3b3c3d1d6a36ba4264977387e559 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -197,14 +197,15 @@ BOOL LLPanelMainInventory::postBuild()
 		mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2));
 	}
 
+	initListCommandsHandlers();
+
 	// *TODO:Get the cost info from the server
 	const std::string upload_cost("10");
-	childSetLabelArg("Upload Image", "[COST]", upload_cost);
-	childSetLabelArg("Upload Sound", "[COST]", upload_cost);
-	childSetLabelArg("Upload Animation", "[COST]", upload_cost);
-	childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
+	mMenuAdd->getChild<LLMenuItemGL>("Upload Image")->setLabelArg("[COST]", upload_cost);
+	mMenuAdd->getChild<LLMenuItemGL>("Upload Sound")->setLabelArg("[COST]", upload_cost);
+	mMenuAdd->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", upload_cost);
+	mMenuAdd->getChild<LLMenuItemGL>("Bulk Upload")->setLabelArg("[COST]", upload_cost);
 
-	initListCommandsHandlers();
 	return TRUE;
 }
 
diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp
index 6ba015b11c23b41d577dd6e519073d5443ba74d6..b21fd7d3859b7f8ebe1b9b2e9d3e18bd64c01c8e 100644
--- a/indra/newview/llpanelonlinestatus.cpp
+++ b/indra/newview/llpanelonlinestatus.cpp
@@ -34,6 +34,7 @@
 
 #include "llnotifications.h"
 #include "llpanelonlinestatus.h"
+#include "llviewercontrol.h" // for gSavedSettings
 
 LLPanelOnlineStatus::LLPanelOnlineStatus(
 		const LLNotificationPtr& notification) :
@@ -54,7 +55,7 @@ LLPanelOnlineStatus::LLPanelOnlineStatus(
 				notification, notification->getResponseTemplate()));
 	}
 
-	// set line max count to 3 in case of a very long name
-	snapToMessageHeight(getChild<LLTextBox> ("message"), 3);
+	S32 max_line_count =  gSavedSettings.getS32("TipToastMessageLineCount");
+	snapToMessageHeight(getChild<LLTextBox> ("message"), max_line_count);
 
 }
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 8fe78a0f818c5f9c05669e77a9d1aa01a67ee88b..f2e69699984b78147e9e622e285277462b163c3b 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -582,7 +582,7 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)
 	else
 	{
 		std::string display_name = LLVoiceClient::getInstance()->getDisplayName(avatar_id);
-		mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? display_name : LLTrans::getString("AvatarNameWaiting"));
+		mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), display_name.empty() ? LLTrans::getString("AvatarNameWaiting") : display_name);
 		mAvalineUpdater->watchAvalineCaller(avatar_id);
 	}
 	adjustParticipant(avatar_id);
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index bf18c9e5e7c1b4e5acddce3a9e8d9a4de1e9412b..c4cbbbb791b887b0e8e7f89f72052d56a2190f5a 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -75,7 +75,8 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
 	  mLastWidth(0),
 	  mAspectRatio(0.f),
 	  mPreviewToSave(FALSE),
-	  mImage(NULL)
+	  mImage(NULL),
+	  mImageOldBoostLevel(LLViewerTexture::BOOST_NONE)
 {
 	updateImageID();
 	if (key.has("save_as"))
@@ -93,7 +94,7 @@ LLPreviewTexture::~LLPreviewTexture()
 	{
 		getWindow()->decBusyCount();
 	}
-
+	mImage->setBoostLevel(mImageOldBoostLevel);
 	mImage = NULL;
 }
 
@@ -543,6 +544,7 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
 void LLPreviewTexture::loadAsset()
 {
 	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	mImageOldBoostLevel = mImage->getBoostLevel();
 	mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
 	mImage->forceToSaveRawImage(0) ;
 	mAssetStatus = PREVIEW_ASSET_LOADING;
diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h
index 0f29a741c11deff173cc4d4bbfeacba05cc498c7..cbdb057781ceb7f92426411b7a9cad730de2a885 100644
--- a/indra/newview/llpreviewtexture.h
+++ b/indra/newview/llpreviewtexture.h
@@ -82,9 +82,10 @@ class LLPreviewTexture : public LLPreview
 	void				updateDimensions();
 	LLUUID				mImageID;
 	LLPointer<LLViewerFetchedTexture>		mImage;
-	BOOL				mLoadingFullImage;
+	S32                 mImageOldBoostLevel;
 	std::string			mSaveFileName;
 	LLFrameTimer		mSavedFileTimer;
+	BOOL				mLoadingFullImage;
 	BOOL                mShowKeepDiscard;
 	BOOL                mCopyToInv;
 
@@ -94,11 +95,10 @@ class LLPreviewTexture : public LLPreview
 	// This is stored off in a member variable, because the save-as
 	// button and drag and drop functionality need to know.
 	BOOL mIsCopyable;
-
+	BOOL mUpdateDimensions;
 	S32 mLastHeight;
 	S32 mLastWidth;
-	F32 mAspectRatio;
-	BOOL mUpdateDimensions;
+	F32 mAspectRatio;	
 
 	LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; 
 };
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index b68fc3b0020d715257015da6581ae5631a55fe91..75797dae812b2b974cd269f361c64e1dbf5ebb3e 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -176,7 +176,15 @@ void LLScriptFloater::onClose(bool app_quitting)
 
 	if(getNotificationId().notNull())
 	{
-		LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
+		// we shouldn't kill notification on exit since it may be used as persistent.
+		if (app_quitting)
+		{
+			LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
+		}
+		else
+		{
+			LLScriptFloaterManager::getInstance()->removeNotification(getNotificationId());
+		}
 	}
 }
 
@@ -352,7 +360,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 				set_new_message |= !floater->hasFocus();
 			}
 
-			onRemoveNotification(it->first);
+			removeNotification(it->first);
 		}
 	}
 
@@ -379,6 +387,17 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 	toggleScriptFloater(notification_id, set_new_message);
 }
 
+void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id)
+{
+	LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+	if (notification != NULL && !notification->isCancelled())
+	{
+		LLNotificationsUtil::cancel(notification);
+	}
+
+	onRemoveNotification(notification_id);
+}
+
 void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
 {
 	if(notification_id.isNull())
@@ -392,6 +411,8 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
 
 	LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
 
+	mNotifications.erase(notification_id);
+
 	// close floater
 	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
 	if(floater)
@@ -400,8 +421,6 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
 		floater->setNotificationId(LLUUID::null);
 		floater->closeFloater();
 	}
-
-	mNotifications.erase(notification_id);
 }
 
 void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message)
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index dc0cfc2400dd8f560d6fabf8b4523a9374e98b5e..6990234fd77ce4cdd871aa9fe180a23b8e3cb251 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -64,6 +64,11 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 	 */
 	void onAddNotification(const LLUUID& notification_id);
 
+	/**
+	 * Removes notification.
+	 */
+	void removeNotification(const LLUUID& notification_id);
+
 	/**
 	 * Handles notification removal.
 	 * Removes script notification toast, removes script chiclet, closes script floater
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index e6b4aeb6c20e10eeb74a45466d6e715b3ad3e9bb..1a8c2b8fc06bcdd2cd10a7581f9ccd92536c1aef 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -371,7 +371,7 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel()
 //---------------------------------------------------------------------------------
 void LLIMWellWindow::ObjectRowPanel::onClosePanel()
 {
-	LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId());
+	LLScriptFloaterManager::getInstance()->removeNotification(mChiclet->getSessionId());
 }
 
 void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/)
@@ -832,7 +832,7 @@ void LLIMWellWindow::closeAllImpl()
 		ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
 		if (obj_panel)
 		{
-			LLScriptFloaterManager::instance().onRemoveNotification(*iter);
+			LLScriptFloaterManager::instance().removeNotification(*iter);
 		}
 	}
 }
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index fcb9deb20baee989601d92652fe0cdd7b268072f..0b02861b75836b5743a97b7e8e3f826ee57b97fb 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -423,6 +423,10 @@ BOOL LLFloaterTexturePicker::postBuild()
 		mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
 		mInventoryPanel->setAllowMultiSelect(FALSE);
 
+		// Disable auto selecting first filtered item because it takes away
+		// selection from the item set by LLTextureCtrl owning this floater.
+		mInventoryPanel->getRootFolder()->setAutoSelectOverride(TRUE);
+
 		// Commented out to scroll to currently selected texture. See EXT-5403.
 		// // store this filter as the default one
 		// mInventoryPanel->getRootFolder()->getFilter()->markDefault();
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
index 8488527185dc7f636e9921d3815b0f7a54faad46..333f682e8fad2be7d03d7b6ab3d18916bb046127 100644
--- a/indra/newview/llurllineeditorctrl.cpp
+++ b/indra/newview/llurllineeditorctrl.cpp
@@ -89,9 +89,10 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
 
 	const std::string unescaped_text = wstring_to_utf8str(mText.getWString().substr(left_pos, length));
 	LLWString text_to_copy;
-	if (LLSLURL(unescaped_text).isValid())
+	// *HACK: Because LLSLURL is currently broken we cannot use it to check if unescaped_text is a valid SLURL (see EXT-8335).
+	if (LLStringUtil::startsWith(unescaped_text, "http://")) // SLURL
 		text_to_copy = utf8str_to_wstring(LLWeb::escapeURL(unescaped_text));
-	else
+	else // human-readable location
 		text_to_copy = utf8str_to_wstring(unescaped_text);
 		
 	gClipboard.copyFromString( text_to_copy );
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index dc3d3f742362e2c0baeb987049de37be9a7fc916..1dd6597388faf779988231282c5a6b3440097b64 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -302,7 +302,7 @@ class AddFavoriteLandmarkCallback : public LLInventoryCallback
 
 class LLInventoryCallbackManager : public LLDestroyClass<LLInventoryCallbackManager>
 {
-	friend LLDestroyClass<LLInventoryCallbackManager>;
+	friend class LLDestroyClass<LLInventoryCallbackManager>;
 public:
 	LLInventoryCallbackManager();
 	~LLInventoryCallbackManager();
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 0afbce7d513de0fd8f9efdeec761d120c1a3e473..75bb9f84e2a47b5319c2e8f246fd3c767835b1ae 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -495,6 +495,7 @@ LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 com
 	mFullHeight = height ;
 	mUseMipMaps = usemipmaps ;
 	mComponents = components ;
+	setTexelsPerImage();
 
 	mID.generate();
 	sImageCount++;
@@ -522,6 +523,7 @@ void LLViewerTexture::init(bool firstinit)
 
 	mFullWidth = 0;
 	mFullHeight = 0;
+	mTexelsPerImage = 0 ;
 	mUseMipMaps = FALSE ;
 	mComponents = 0 ;
 
@@ -530,7 +532,7 @@ void LLViewerTexture::init(bool firstinit)
 	mMaxVirtualSize = 0.f;
 	mNeedsGLTexture = FALSE ;
 	mMaxVirtualSizeResetInterval = 1;
-	mMaxVirtualSizeResetCounter = 1 ;
+	mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ;
 	mAdditionalDecodePriority = 0.f ;	
 	mParcelMedia = NULL ;
 	mNumFaces = 0 ;
@@ -838,7 +840,8 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image
 	{
 		mFullWidth = mGLTexturep->getCurrentWidth() ;
 		mFullHeight = mGLTexturep->getCurrentHeight() ; 
-		mComponents = mGLTexturep->getComponents() ;		
+		mComponents = mGLTexturep->getComponents() ;	
+		setTexelsPerImage();
 	}
 
 	return ret ;
@@ -1056,9 +1059,16 @@ void LLViewerTexture::destroyGLTexture()
 	}	
 }
 
+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 mFullWidth * mFullHeight > LLViewerTexture::sMinLargeImageSize ;
+	return  (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ;
 }
 
 //virtual 
@@ -1415,6 +1425,7 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
 			
 			mFullWidth = mRawImage->getWidth();
 			mFullHeight = mRawImage->getHeight();
+			setTexelsPerImage();
 		}
 		else
 		{
@@ -1619,11 +1630,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 	{
 		// priority range = 100,000 - 500,000
 		S32 desired_discard = mDesiredDiscardLevel;
-		if (getDontDiscard())
-		{
-			desired_discard -= 2;
-		}
-		else if (!isJustBound() && mCachedRawImageReady)
+		if (!isJustBound() && mCachedRawImageReady)
 		{
 			if(mBoostLevel < BOOST_HIGH)
 			{
@@ -1639,7 +1646,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 
 		S32 ddiscard = cur_discard - desired_discard;
 		ddiscard = llclamp(ddiscard, -1, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
-		priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
+		priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;		
 	}
 
 	// Priority Formula:
@@ -1647,19 +1654,51 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 	// [10,000,000] + [1,000,000-9,000,000]  + [100,000-500,000]   + [1-20,000]  + [0-999]
 	if (priority > 0.0f)
 	{
+		bool large_enough = mCachedRawImageReady && ((S32)mTexelsPerImage > sMinLargeImageSize) ;
+		if(large_enough)
+		{
+			//Note: 
+			//to give small, low-priority textures some chance to be fetched, 
+			//cut the priority in half if the texture size is larger than 256 * 256 and has a 64*64 ready.
+			priority *= 0.5f ; 
+		}
+
 		pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL); 
 
 		priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel;
 
 		if ( mBoostLevel > BOOST_HIGH)
 		{
-			priority += PRIORITY_BOOST_HIGH_FACTOR;
+			if(mBoostLevel > BOOST_SUPER_HIGH)
+			{
+				//for very important textures, always grant the highest priority.
+				priority += PRIORITY_BOOST_HIGH_FACTOR;
+			}
+			else if(mCachedRawImageReady)
+			{
+				//Note: 
+				//to give small, low-priority textures some chance to be fetched, 
+				//if high priority texture has a 64*64 ready, lower its fetching priority.
+				setAdditionalDecodePriority(0.5f) ;
+			}
+			else
+			{
+				priority += PRIORITY_BOOST_HIGH_FACTOR;
+			}
 		}		
 
 		if(mAdditionalDecodePriority > 0.0f)
 		{
 			// priority range += 1,000,000.f-9,000,000.f
-			priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
+			F32 additional = PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
+			if(large_enough)
+			{
+				//Note: 
+				//to give small, low-priority textures some chance to be fetched, 
+				//cut the additional priority to a quarter if the texture size is larger than 256 * 256 and has a 64*64 ready.
+				additional *= 0.25f ;
+			}
+			priority += additional;
 		}
 	}
 	return priority;
@@ -1702,11 +1741,6 @@ void LLViewerFetchedTexture::updateVirtualSize()
 		addTextureStats(0.f, FALSE) ;//reset
 	}
 
-	if(mForceToSaveRawImage)
-	{
-		setAdditionalDecodePriority(0.75f) ; //boost the fetching priority
-	}
-
 	for(U32 i = 0 ; i < mNumFaces ; i++)
 	{				
 		LLFace* facep = mFaceList[i] ;
@@ -1819,6 +1853,7 @@ bool LLViewerFetchedTexture::updateFetch()
 			{
 				mFullWidth = mRawImage->getWidth() << mRawDiscardLevel;
 				mFullHeight = mRawImage->getHeight() << mRawDiscardLevel;
+				setTexelsPerImage();
 
 				if(mFullWidth > MAX_IMAGE_SIZE || mFullHeight > MAX_IMAGE_SIZE)
 				{ 
@@ -2887,10 +2922,6 @@ void LLViewerLODTexture::processTextureStats()
 		//static const F64 log_2 = log(2.0);
 		static const F64 log_4 = log(4.0);
 
-		S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
-		S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
-		mTexelsPerImage = (F32)fullwidth * fullheight;
-
 		F32 discard_level = 0.f;
 
 		// If we know the output width and height, we can force the discard
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 8b69408e4bdfa52dcafc482739ab94a7fbc2fcf6..b33d04e8dd3c65c2f89f408b5468477d0c22bb36 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -126,15 +126,16 @@ class LLViewerTexture : public LLTexture
 		BOOST_HIGH 			= 10,
 		BOOST_BUMP          ,
 		BOOST_TERRAIN		, // has to be high priority for minimap / low detail
-		BOOST_SELECTED		,
-		BOOST_HUD			,
+		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_AVATAR_SELF	, // needed for baking avatar
+		BOOST_MAP_VISIBLE	,		
 		BOOST_MAX_LEVEL,
 
 		//other texture Categories
@@ -268,6 +269,7 @@ class LLViewerTexture : public LLTexture
 	void init(bool firstinit) ;	
 	void reorganizeFaceList() ;
 	void reorganizeVolumeList() ;
+	void setTexelsPerImage();
 private:
 	//note: do not make this function public.
 	/*virtual*/ LLImageGL* getGLTexture() const ;
@@ -280,6 +282,7 @@ class LLViewerTexture : public LLTexture
 	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 ;
@@ -598,8 +601,6 @@ class LLViewerLODTexture : public LLViewerFetchedTexture
 	void scaleDown() ;		
 
 private:
-	
-	F32 mTexelsPerImage;			// Texels per image.
 	F32 mDiscardVirtualSize;		// Virtual size used to calculate desired discard	
 	F32 mCalculatedDiscardLevel;    // Last calculated discard level
 };
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 47e35ca0c40d9c23696aa0135884c897e5d5cb2c..07b98eaf82a0cd6268eb799ca80e9e67318d777b 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3189,29 +3189,26 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{ // muted avatars update at 16 hz
 			mUpdatePeriod = 16;
 		}
-		else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible)
+		else if (mVisibilityRank <= LLVOAvatar::sMaxVisible)
 		{ //first 25% of max visible avatars are not impostored
 			mUpdatePeriod = 1;
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
+		else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
 		{ //background avatars are REALLY slow updating impostors
 			mUpdatePeriod = 16;
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
+		else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
 		{ //back 25% of max visible avatars are slow updating impostors
 			mUpdatePeriod = 8;
 		}
-		else if (visible && mImpostorPixelArea <= impostor_area)
+		else if (mImpostorPixelArea <= impostor_area)
 		{  // stuff in between gets an update period based on pixel area
 			mUpdatePeriod = llclamp((S32) sqrtf(impostor_area*4.f/mImpostorPixelArea), 2, 8);
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible)
-		{ // force nearby impostors in ultra crowded areas
-			mUpdatePeriod = 2;
-		}
 		else
-		{ // not impostored
-			mUpdatePeriod = 1;
+		{
+			//nearby avatars, update the impostors more frequently.
+			mUpdatePeriod = 4;
 		}
 
 		visible = (LLDrawable::getCurrentFrame()+mID.mData[0])%mUpdatePeriod == 0 ? TRUE : FALSE;
@@ -4274,10 +4271,12 @@ void LLVOAvatar::checkTextureLoading()
 	return ;
 }
 
+const F32  SELF_ADDITIONAL_PRI = 0.75f ;
+const F32  ADDITIONAL_PRI = 0.5f;
 void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level)
 {
 	//if this function is not called for the last 512 frames, the texture pipeline will stop fetching this texture.
-	static const S32  MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames	
+	static const S32  MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames		
 
 	imagep->resetTextureStats();
 	imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.
@@ -4287,9 +4286,14 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 	mMinPixelArea = llmin(pixel_area, mMinPixelArea);	
 	imagep->addTextureStats(pixel_area / texel_area_ratio);
 	imagep->setBoostLevel(boost_level);
-	if(boost_level == LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
+	
+	if(boost_level != LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
+	{
+		imagep->setAdditionalDecodePriority(ADDITIONAL_PRI) ;
+	}
+	else
 	{
-		imagep->setAdditionalDecodePriority(1.0f) ;
+		imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
 	}
 }
 
@@ -7300,7 +7304,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
 	std::sort(LLCharacter::sInstances.begin(), LLCharacter::sInstances.end(), CompareScreenAreaGreater());
 	
 	// Update the avatars that have changed status
-	U32 rank = 0;
+	U32 rank = 2; //1 is reserved for self. 
 	for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
 		 iter != LLCharacter::sInstances.end(); ++iter)
 	{
@@ -7324,7 +7328,7 @@ void LLVOAvatar::cullAvatarsByPixelArea()
 
 		if (inst->isSelf())
 		{
-			inst->setVisibilityRank(0);
+			inst->setVisibilityRank(1);
 		}
 		else if (inst->mDrawable.notNull() && inst->mDrawable->isVisible())
 		{
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index dd7d0bb24db0c4102ce6c608277181019fca4307..49b9fe1536ebf632a55d15c450deb8ef76e5735b 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -1048,5 +1048,6 @@ class LLVOAvatar :
  *******************************************************************************/
 
 }; // LLVOAvatar
+extern const F32  SELF_ADDITIONAL_PRI;
 
 #endif // LL_VO_AVATAR_H
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 4edbbb7402ada511837fa4fa8601043f215860e5..b80e47e11a63c2312fc758ffffd966b95a3bcedb 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2034,7 +2034,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 			imagep->resetTextureStats();
 			imagep->setMaxVirtualSizeResetInterval(16);
 			imagep->addTextureStats( desired_pixels / texel_area_ratio );
-			imagep->setAdditionalDecodePriority(1.0f) ;
+			imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
 			imagep->forceUpdateBindStats() ;
 			if (imagep->getDiscardLevel() < 0)
 			{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 7d0f763bd1ccc23ea6a36ab1fd5de9c781df1304..b578cb9f690e3ecc5acb6f2afe59d85f56b1723a 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7111,7 +7111,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
 	{
 		BOOL skip_avatar_update = FALSE;
-		if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
+		if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
 		{
 			skip_avatar_update = 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 5ad099e2d9e7f93deb0f7075c25160aad138af2b..ae98abf4fbce4403f1c93771d9549d8ed1428438 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -50,8 +50,13 @@
                      function="File.UploadBulk"
                      parameter="" />
                 </menu_item_call>
-                <menu_item_separator
-                 layout="topleft" />
+	            <menu_item_call
+	             label="Set Default Upload Permissions"
+	             name="perm prefs">
+	                <menu_item_call.on_click
+	                 function="Floater.Toggle"
+	                 parameter="perm_prefs" />
+	            </menu_item_call>
             </menu>
 
             <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 355731870555883e52f9827153652a8d3d04bfbc..63ff7047b48ff06f807bd49181adbe0acbaf46c5 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -707,13 +707,6 @@
          label="Options"
          name="Options"
          tear_off="true">
-            <menu_item_call
-             label="Set Default Upload Permissions"
-             name="perm prefs">
-                <menu_item_call.on_click
-                 function="Floater.Toggle"
-                 parameter="perm_prefs" />
-            </menu_item_call>
 	   <menu_item_check
 	       label="Show Advanced Permissions"
 	       name="DebugPermissions">
@@ -873,8 +866,13 @@
                  function="File.UploadBulk"
                  parameter="" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_call
+             label="Set Default Upload Permissions"
+             name="perm prefs">
+                <menu_item_call.on_click
+                 function="Floater.Toggle"
+                 parameter="perm_prefs" />
+            </menu_item_call>
         </menu>
     </menu>
     <menu
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
index d8675b351289058062c6ae72f3ea919e8814f51f..584ca8b3b58e3285a7a0d2184efdead3fddf23f6 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -104,6 +104,7 @@
 		follows="top|left"
 		font="SansSerif"
 		left="10"
+		name="nearby_media_title"
 		width="100">
 	  Nearby Media
 	</text>
@@ -114,6 +115,7 @@
 		font="SansSerif"
 		top_pad="15"
 		left="10"
+		name="show_text"
 		width="40">
 	  Show:
 	</text>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index b43aa0a8248369fa8e8192b543cda5185e92ff8e..d18f0d57ca629efd4f4e2cdef1515170c6aacfbb 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -14,9 +14,9 @@
      background_visible="true"
      bg_alpha_color="DkGray2"
      bg_opaque_color="DkGray2"
-     no_matched_tabs_text.value="NoOutfitsTabsMatched"
+     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
      no_matched_tabs_text.v_pad="10"
-     no_visible_tabs_text.value="NoOutfits"
+     no_visible_tabs_text.value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]"
      follows="all"
      height="400"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 0c31fda68bb2f52f45e1b9b4e1aa1339e4e69f67..b91acbe27da90910135c3f6e9da1cc34a41637bf 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1956,6 +1956,9 @@ Clears (deletes) the media and all params from the given face.
 	<string name="InvFolder Animations">Animations</string>
 	<string name="InvFolder Gestures">Gestures</string>
 	<string name="InvFolder Favorite">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 -->
+	<string name="InvFolder favorite">Favorites</string>
 	<string name="InvFolder Current Outfit">Current Outfit</string>
 	<string name="InvFolder My Outfits">My Outfits</string>
 	<string name="InvFolder Accessories">Accessories</string>
@@ -2194,10 +2197,6 @@ Clears (deletes) the media and all params from the given face.
   <!-- 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>
 
-	<!-- Outfits Panel -->
-	<string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string>
-	<string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string>
-
 	<!-- Mute -->
 	<string name="MuteByName">(By name)</string>
 	<string name="MuteAgent">(Resident)</string>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml
index ec6d995274f912bbd3827f87ff2ee04558789c23..a2655dcd458771818029cef5ad8fa95b5c56cc88 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml
@@ -48,7 +48,7 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus.
 		<spinner label="L$" name="spin_enrollment_fee" tool_tip="Les nouveaux membres doivent payer ces frais pour rejoindre le groupe quand l&apos;option Frais d&apos;inscription est cochée."/>
 		<combo_box name="group_mature_check" tool_tip="Définit si votre groupe contient des informations de type Modéré" width="195">
 			<combo_item name="select_mature">
-				- Sélectionner une catégorie de contenu -
+				- Catégorie de contenu -
 			</combo_item>
 			<combo_box.item label="Contenu Modéré" name="mature"/>
 			<combo_box.item label="Contenu Général" name="pg"/>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index c9a004be9f926e6ec09582c05ce7b960ee17ad49..af83a3874685b05d35e401f55c256e26c274edda 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -320,7 +320,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			<text name="allow_label">
 				Permetti ad altri residenti di:
 			</text>
-			<check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E&apos; preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/>
+			<check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntata, chiunque può terraformare il tuo terreno. È preferibile lasciare questa opzione non spuntata, dato che sarai comunque in grado di modificare il tuo terreno."/>
 			<check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/>
 			<text name="allow_label2">
 				Creare oggetti:
@@ -328,7 +328,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			<check_box label="Tutti i residenti" name="edit objects check"/>
 			<check_box label="Gruppo" name="edit group objects check"/>
 			<text name="allow_label3">
-				Entrata oggetti:
+				Immissione oggetti:
 			</text>
 			<check_box label="Tutti i residenti" name="all object entry check"/>
 			<check_box label="Gruppo" name="group object entry check"/>
@@ -340,9 +340,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			<text name="land_options_label">
 				Opzioni per il terreno:
 			</text>
-			<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/>
+			<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento con danni."/>
 			<check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/>
-			<check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/>
+			<check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Consenti che il lotto sia visto nei risultati di ricerca"/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="Tutte le categorie" name="item0"/>
 				<combo_box.item label="Luogo dei Linden" name="item1"/>
@@ -421,7 +421,7 @@ Texture:
 			<spinner left_delta="104" name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/>
 			<spinner name="media_size_height" tool_tip="Aumenta altezza per far vedere meglio i media web, lascia a 0 per impostare il default."/>
 			<text name="pixels">
-				pixels
+				pixel
 			</text>
 			<text name="Options:">
 				Opzioni
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
index 1327e8b172a10dfd555ddf22279db8a75a3c92c9..0a499a6c44faa3046252204bf65a5b9c15b32599 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="buy currency" title="ACQUISTA L$">
 	<floater.string name="buy_currency">
-		Acquista [LINDENS] L$ per circa [LOCALAMOUNT]
+		acquistare [LINDENS] L$ per circa [LOCALAMOUNT]
 	</floater.string>
 	<text font="SansSerifLarge" left="5" name="info_need_more" right="-5">
 		Ti servono più L$
@@ -57,8 +57,8 @@
 	<text bottom_delta="16" name="purchase_warning_notenough">
 		Non stai acquistando abbastanza L$. Aumenta l&apos;importo.
 	</text>
-	<button label="Acquista adesso" name="buy_btn"/>
-	<button label="Cancella" name="cancel_btn"/>
+	<button label="Acquista" name="buy_btn"/>
+	<button label="Annulla" name="cancel_btn"/>
 	<text left="5" name="info_cannot_buy" right="-5">
 		Non in grado di acquistare
 	</text>
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
index 056e424436e3e525bfaacacb8142325cb35d2353..3d07ff45badd699902e21148845d405f82ae2749 100644
--- a/indra/newview/skins/default/xui/it/panel_people.xml
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -3,7 +3,7 @@
 <panel label="Persone" name="people_panel">
 	<string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
 	<string name="no_filtered_recent_people" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/>
-	<string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Try la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
+	<string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Prova a vedere la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/>
 	<string name="no_one_filtered_near" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/>
 	<string name="no_friends_online" value="Nessun amico online"/>
 	<string name="no_friends" value="Nessun amico"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
index 364638780a28ae041ac0e29ea2a3cddd3ae14ba0..a01bee94a123d8de8913b2977a8777cd68fd74de 100644
--- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="gesture_preview">
 	<floater.string name="step_anim">
-		Selecionar animação:
+		Executar animação:
 	</floater.string>
 	<floater.string name="step_sound">
-		Selecionar animação:
+		Executar som:
 	</floater.string>
 	<floater.string name="step_chat">
-		Diga por bate-papo:
+		Executar bate-papo:
 	</floater.string>
 	<floater.string name="step_wait">
-		Espere:
+		Pausa
 	</floater.string>
 	<floater.string name="stop_txt">
 		Parar
@@ -31,11 +31,11 @@
 		Gatilho:
 	</text>
 	<text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho &apos;oi&apos; substituído por &apos;olá&apos;, mudará a conversa de &apos;Eu digo oi&apos; para &apos;Eu digo olá&apos; e também executando o gesto!">
-		Substituir por:
+		Trocar por:
 	</text>
-	<line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras.Por exemplo, o gatilho &apos;oi&apos; substituído por &apos;olá&apos;, mudará a conversa de &apos;Eu digo oi&apos; para &apos;Eu digo olá&apos; e também executando o gesto!"/>
+	<line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho &apos;oi&apos; substituído por &apos;olá&apos;, mudará a conversa de &apos;Eu digo oi&apos; para &apos;Eu digo olá&apos; e também executando o gesto!"/>
 	<text name="key_label">
-		Tecla de Atalho:
+		Atalho:
 	</text>
 	<combo_box label="Nenhum" left="116" name="modifier_combo" width="76"/>
 	<combo_box label="Nenhum" left_delta="80" name="key_combo" width="76"/>
@@ -55,16 +55,16 @@
 		(opções)
 	</text>
 	<radio_group name="animation_trigger_type">
-		<radio_item label="OK" name="start"/>
-		<radio_item label="Pare" name="stop"/>
+		<radio_item label="Iniciar" name="start"/>
+		<radio_item label="Parar" name="stop"/>
 	</radio_group>
 	<check_box bottom_delta="34" label="até que as animações estejam  concluídas" name="wait_anim_check"/>
 	<check_box bottom_delta="-30" label="segundos:" name="wait_time_check"/>
 	<line_editor left_delta="130" name="wait_time_editor"/>
 	<text name="help_label">
-		Se não incluir etapas de espera, todas as etapas ocorrem ao mesmo tempo.
+		Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo.
 	</text>
-	<check_box label="Ativar" name="active_check" tool_tip="Gestos ativos podem ser gatilhados escrevendo suas frases de gatilho no chat ou através de suas teclas de atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/>
+	<check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/>
 	<button label="Prévia" name="preview_btn"/>
 	<button label="Salvar" name="save_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index dbc8b3ffbe78dd4b455eb880aa38468df735022c..e70bd0575e4112502f90bf0585993901c3612af0 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="toolbox floater" short_title="BUILD TOOLS" title="" width="288">
 	<floater.string name="status_rotate">
-		Arrastar as bandas coloridas para girar o objeto
+		Arrastar as faixas coloridas para girar o objeto
 	</floater.string>
 	<floater.string name="status_scale">
 		Clicar e arrastar para esticar o lado selecionado
@@ -13,13 +13,13 @@
 		Clicar e reter para modificar a terra
 	</floater.string>
 	<floater.string name="status_camera">
-		Clique e arraste para mexer a câmera
+		Clicar e arrastar para mover a câmera
 	</floater.string>
 	<floater.string name="status_grab">
-		Arraste para mexer, Ctrl para levantar, Ctrl+Shift para girar
+		Arrastar para mexer, Ctrl para levantar, Ctrl+Shift para girar
 	</floater.string>
 	<floater.string name="status_place">
-		Clique no mundo para construir
+		Clicar em um lugar para construir
 	</floater.string>
 	<floater.string name="status_selectland">
 		Clicar e arrastar para selecionar a terra
@@ -45,7 +45,7 @@
 	<button label="" label_selected="" name="button create" tool_tip="Criar"/>
 	<button label="" label_selected="" name="button land" tool_tip="Terra"/>
 	<text name="text status" width="280">
-		Arraste para mover, shift+Arrastar para Copiar
+		Arrastar para mover, shift+Arrastar para copiar
 	</text>
 	<radio_group name="focus_radio_group">
 		<radio_item label="Zoom" name="radio zoom"/>
@@ -58,10 +58,10 @@
 		<radio_item label="Spin (Ctrl+Shift)" name="radio spin"/>
 	</radio_group>
 	<radio_group name="edit_radio_group">
-		<radio_item label="Movimentar" name="radio position"/>
+		<radio_item label="Mover" name="radio position"/>
 		<radio_item label="Rotacionar (Ctrl)" name="radio rotate"/>
-		<radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/>
-		<radio_item label="Face selecionada" name="radio select face"/>
+		<radio_item label="Esticar (Ctrl+Shift)" name="radio stretch"/>
+		<radio_item label="Selecionar face" name="radio select face"/>
 	</radio_group>
 	<check_box label="Editar partes linkadas" name="checkbox edit linked parts"/>
 	<text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto">
@@ -73,10 +73,10 @@
 	</text>
 	<check_box initial_value="true" label="Esticar texturas" name="checkbox stretch textures"/>
 	<check_box initial_value="true" label="Mostrar na grade" name="checkbox snap to grid"/>
-	<combo_box name="combobox grid mode" tool_tip="Selecione o tipo de régua da grade onde o objeto será colocado">
-		<combo_box.item label="Grid SL" name="World"/>
-		<combo_box.item label="Grid local" name="Local"/>
-		<combo_box.item label="Grid de referência" name="Reference"/>
+	<combo_box name="combobox grid mode" tool_tip="Selecione a régua da grade onde o objeto será colocado">
+		<combo_box.item label="Grade SL" name="World"/>
+		<combo_box.item label="Local" name="Local"/>
+		<combo_box.item label="Referência" name="Reference"/>
 	</combo_box>
 	<button label="Opções..." label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/>
 	<button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/>
@@ -99,12 +99,12 @@
 	<check_box initial_value="true" label="Copiar parte central" name="checkbox copy centers"/>
 	<check_box label="Girar cópia" name="checkbox copy rotates"/>
 	<radio_group name="land_radio_group">
-		<radio_item label="Selecionar Terra" name="radio select land"/>
+		<radio_item label="Selecionar terra" name="radio select land"/>
 		<radio_item label="Aplainar" name="radio flatten"/>
-		<radio_item label="Subir" name="radio raise"/>
+		<radio_item label="Elevar" name="radio raise"/>
 		<radio_item label="Abaixar" name="radio lower"/>
-		<radio_item label="Suavizar" name="radio smooth"/>
-		<radio_item label="Endurecer" name="radio noise"/>
+		<radio_item label="Alisar" name="radio smooth"/>
+		<radio_item label="Irregularizar" name="radio noise"/>
 		<radio_item label="Reverter" name="radio revert"/>
 	</radio_group>
 	<text name="Bulldozer:">
@@ -144,7 +144,7 @@
 				Você não pode modificar estes objetos
 			</panel.string>
 			<panel.string name="text modify warning">
-				Selecione o objeto intereiro para configurar as autorizações
+				Selecione o objeto inteiro para configurar as autorizações
 			</panel.string>
 			<panel.string name="Cost Default">
 				Preço: L$
@@ -156,10 +156,10 @@
 				Preço unitário: L$
 			</panel.string>
 			<panel.string name="Cost Mixed">
-				Preço Misturado
+				Preço misto
 			</panel.string>
 			<panel.string name="Sale Mixed">
-				Venda Misturada
+				Venda mista
 			</panel.string>
 			<text name="Name:">
 				Nome:
@@ -193,7 +193,7 @@
 				<combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/>
 				<combo_box.item label="Sentar no objeto" name="Sitonobject"/>
 				<combo_box.item label="Comprar objeto" name="Buyobject"/>
-				<combo_box.item label="Pagar Objeto" name="Payobject"/>
+				<combo_box.item label="Pagar objeto" name="Payobject"/>
 				<combo_box.item label="Abrir" name="Open"/>
 				<combo_box.item label="Zoom" name="Zoom"/>
 			</combo_box>
@@ -358,7 +358,7 @@
 		</panel>
 		<panel label="Recursos" name="Features">
 			<text name="select_single" width="272">
-				Selecione apenas uma primitiva para editar suas características.
+				Selecione apenas um prim para editar suas características.
 			</text>
 			<text name="edit_object">
 				Editar características do Objeto:
@@ -480,7 +480,7 @@
 		<button label="Sobre terrenos" label_selected="Sobre terrenos" name="button about land"/>
 		<check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos:    Green = Sua terra  Aqua = Terra do seu grupo  Red = Possuída por outros  Yellow = À venda  Purple = A leilão  Grey = Pública"/>
 		<text name="label_parcel_modify">
-			Modificar Lote
+			Modificar lote
 		</text>
 		<button label="Subdividir" label_selected="Subdividir" name="button subdivide land"/>
 		<button label="Juntar" label_selected="Juntar" name="button join land"/>
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 b9f96778339768bd0660ae16a5ca28e3e725fc97..cb9b3c8c0d6af6febd7655e8e5b2e3eadb99c487 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="DISTORCENDO 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_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml
index 3952b80269b792b13b41e47d8d988ff12a15f7b9..77d0c787e753b8fa4e6af1a727585c4eec94d58e 100644
--- a/indra/newview/skins/default/xui/pt/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml
@@ -20,13 +20,13 @@
 		</text>
 		<check_box label="Terra à Venda" name="land_for_sale_chk"/>
 		<text name="land_sale_label">
-			Venda de terreno
+			Terreno à venda
 		</text>
 		<text name="by_owner_label">
-			o proprietário
+			pelo dono
 		</text>
 		<text name="auction_label">
-			leilão de terrenos
+			leilão
 		</text>
 		<button label="Voltar ao meu início" label_selected="Voltar ao meu início" name="Go Home" tool_tip="Teletransportar para meu início"/>
 		<text name="Home_label">
@@ -37,7 +37,7 @@
 		</text>
 		<check_box label="PG" name="event_chk"/>
 		<text name="pg_label">
-			Público geral
+			Geral
 		</text>
 		<check_box label="Mature" name="events_mature_chk"/>
 		<text name="events_mature_label">
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml
index d1ab3e976e0ec6648f0c5f4fa507c62624326618..1ee197ce30913641c1ac7f14e1aa74b867d5dc8b 100644
--- a/indra/newview/skins/default/xui/pt/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml
@@ -16,7 +16,7 @@
 	<menu label="Novas roupas" name="New Clothes">
 		<menu_item_call label="Nova camisa" name="New Shirt"/>
 		<menu_item_call label="Nova calça" name="New Pants"/>
-		<menu_item_call label="Novos calçados" name="New Shoes"/>
+		<menu_item_call label="Novos sapatos" name="New Shoes"/>
 		<menu_item_call label="Novas meias" name="New Socks"/>
 		<menu_item_call label="Nova jaqueta" name="New Jacket"/>
 		<menu_item_call label="Nova saia" name="New Skirt"/>
@@ -47,8 +47,8 @@
 	<menu_item_call label="Teletransporte" name="Landmark Open"/>
 	<menu_item_call label="Abrir" name="Animation Open"/>
 	<menu_item_call label="Abrir" name="Sound Open"/>
-	<menu_item_call label="Substituir equipamento" name="Replace Outfit"/>
-	<menu_item_call label="Adicionar ao equipamento" name="Add To Outfit"/>
+	<menu_item_call label="Substituir look" name="Replace Outfit"/>
+	<menu_item_call label="Adicionar a look" name="Add To Outfit"/>
 	<menu_item_call label="Tirar do look atual" name="Remove From Outfit"/>
 	<menu_item_call label="Encontrar original" name="Find Original"/>
 	<menu_item_call label="Remover item" name="Purge Item"/>
@@ -75,7 +75,7 @@
 	<menu_item_call label="Ativar" name="Activate"/>
 	<menu_item_call label="Desativar" name="Deactivate"/>
 	<menu_item_call label="Salvar como" name="Save As"/>
-	<menu_item_call label="Retirar de si mesmo" name="Detach From Yourself"/>
+	<menu_item_call label="Tirar de si mesmo" name="Detach From Yourself"/>
 	<menu_item_call label="Vestir" name="Wearable And Object Wear"/>
 	<menu label="Anexar a" name="Attach To"/>
 	<menu label="Anexar ao HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
index 6196c06d09dd0510d86fd571d28cb8a0cba1effa..39c19a22d4250309df0fe73f955754c15e44fe8b 100644
--- a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
@@ -1,25 +1,25 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="landmark_info">
-	<string name="title_create_landmark" value="Criar Landmark"/>
-	<string name="title_edit_landmark" value="Editar Landmark"/>
-	<string name="title_landmark" value="Landmark"/>
-	<string name="not_available" value="(N\A)"/>
+	<string name="title_create_landmark" value="Criar marco"/>
+	<string name="title_edit_landmark" value="Editar marco"/>
+	<string name="title_landmark" value="Marco"/>
+	<string name="not_available" value="(N/A)"/>
 	<string name="unknown" value="(desconhecido)"/>
 	<string name="public" value="(público)"/>
 	<string name="server_update_text">
 		Informação do lugar não disponível sem atualização do servidor.
 	</string>
 	<string name="server_error_text">
-		Informações sobre esta localização não está disponível neste momento, por favor, tente novamente mais tarde.
+		No momento não há informações sobre este lugar; por favor tente novamente mais tarde.
 	</string>
 	<string name="server_forbidden_text">
-		Informações sobre esta localização está indisponível devido a restrições de acesso. Por favor, verifique as permissões com o proprietário da parcela.
+		Os dados deste lugar não estão indisponíveis devido a restrições de acesso. Verifique as permissões com o proprietário do terreno ou parcela.
 	</string>
 	<string name="acquired_date">
 		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
 	</string>
 	<button name="back_btn" tool_tip="Atrás"/>
-	<text name="title" value="Perfil do Lugar"/>
+	<text name="title" value="Perfil do lugar"/>
 	<scroll_container name="place_scroll">
 		<panel name="scrolling_panel">
 			<text name="maturity_value" value="desconhecido"/>
@@ -31,7 +31,7 @@
 			<panel name="landmark_edit_panel">
 				<text name="title_label" value="Título:"/>
 				<text name="notes_label" value="Minhas notas:"/>
-				<text name="folder_label" value="Localização da Landmark:"/>
+				<text name="folder_label" value="Localização do marco:"/>
 			</panel>
 		</panel>
 	</scroll_container>
diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
index 03f997f31bd0fb580a90db3c60c7ba64d55888eb..554c4d897d171b6ab7c3c86203edd5ad90eca285 100644
--- a/indra/newview/skins/default/xui/pt/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
@@ -36,7 +36,7 @@
 		Dados sobre o local não disponíveis no momento. Favor tentar mais tarde.
 	</string>
 	<string name="server_forbidden_text">
-		Dados sobre o local controlados por lista de acesso.   Verifique se você está autorizado a acessá-los com o dono do lote.
+		Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote.
 	</string>
 	<string name="acquired_date">
 		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
@@ -53,18 +53,18 @@
 						<text name="rating_label" value="Classificação:"/>
 						<text name="rating_value" value="desconhecido"/>
 						<text name="voice_label" value="Voz:"/>
-						<text name="voice_value" value="Ligar"/>
+						<text name="voice_value" value="Ligado"/>
 						<text name="fly_label" value="Voar:"/>
-						<text name="fly_value" value="Ligar"/>
+						<text name="fly_value" value="Ligado"/>
 						<text name="push_label" value="Empurrar:"/>
-						<text name="push_value" value="Desligar"/>
+						<text name="push_value" value="Desligado"/>
 						<text name="build_label" value="Construir:"/>
-						<text name="build_value" value="Ligar"/>
+						<text name="build_value" value="Ligado"/>
 						<text name="scripts_label" value="Scripts:"/>
-						<text name="scripts_value" value="Ligar"/>
+						<text name="scripts_value" value="Ligado"/>
 						<text name="damage_label" value="Dano:"/>
-						<text name="damage_value" value="Desligar"/>
-						<button label="Sobre terrenos" name="about_land_btn"/>
+						<text name="damage_value" value="Desligado"/>
+						<button label="Sobre o terreno" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
 				<accordion_tab name="region_information_tab" title="Região">
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
index 0cf2b7a4afe924ceb78093bf9bcc3500cd5a9dee..ba4ebdb9bffe70c1d3a3af1882150713e65b27f3 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
@@ -21,6 +21,6 @@
 		Localização dos logs:
 	</text>
 	<line_editor left="278" name="log_path_string" right="-20"/>
-	<button label="Navegar" label_selected="Navegar" name="log_path_button" width="120"/>
-	<button label="Lista dos bloqueados" name="block_list"/>
+	<button label="Procurar" label_selected="Procurar" name="log_path_button" width="120"/>
+	<button label="Lista de bloqueados" name="block_list"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml
index 2e6e4dd133abea4c47f0d681fedccb000c53e09c..88fd4b3ca81ff95199c68490e407d2bbdf2b501a 100644
--- a/indra/newview/skins/default/xui/pt/role_actions.xml
+++ b/indra/newview/skins/default/xui/pt/role_actions.xml
@@ -2,7 +2,7 @@
 <role_actions>
 	<action_set description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite." name="Membership">
 		<action description="Convidar pessoas para este grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Convidar&apos; para convidar pessoas para entrar no grupo." name="member invite"/>
-		<action description="Expulsar membros deste grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Ejetar&apos; para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário.  Se você não é Proprietário, um membro só pode ser expulso se tiver cargo &apos;Todos&apos; e nenhum outro cargo.  Para destituir um membro de seu cargo, você precisa ter a função &apos;Destituir membro com cargo&apos;." name="member eject"/>
+		<action description="Expulsar membros deste grupo" longdescription="Em Membros &gt; Cargos, use o botão &apos;Ejetar&apos; para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo &apos;Todos&apos; e nenhum outro cargo.  Para destituir um membro de seu cargo, você precisa ter a função &apos;Destituir membro com cargo&apos;." name="member eject"/>
 		<action description="Alterna entre &apos;Inscrições abertas&apos; e &apos;Taxa de associação&apos;." longdescription="Ative &apos;Inscrições abertas&apos; para que novos membros entrem no grupo sem convite, mude a &apos;Taxa de associação&apos; na seção Geral." name="member options"/>
 	</action_set>
 	<action_set description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções." name="Roles">
@@ -18,7 +18,7 @@
 		<action description="Mudar apresentação, insígnia, &apos;Publicar na web&apos;, e quais membros estão publicamente visíveis em Informações do Grupo." longdescription="Modificar o estatuto, símbolo e exibição nos resultados de busca.  Use a seção Geral." name="group change identity"/>
 	</action_set>
 	<action_set description="Estas funções incluem poderes de transferir, vender e modificar os terrenos do grupo.  Para acessar a janela &apos;Sobre terrenos&apos;, clique no chão com o botão direito e selecione  &apos;Sobre terrenos&apos;. Ou clique no ícone &apos;i&apos; da barra de navegação." name="Parcel Management">
-		<action description="Transferir  e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno &gt; aba Geral." name="land deed"/>
+		<action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno &gt; aba Geral." name="land deed"/>
 		<action description="Abandonar terreno para Governador Linden" longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno &gt; aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade." name="land release"/>
 		<action description="Definir terreno para informação de venda" longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno &gt; aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade." name="land set sale info"/>
 		<action description="Subdividir e unir parcelas" longdescription="Juntar ou dividir lotes.  Clique no chão com o botão direito, selecione &apos;Editar terreno&apos; e arraste o mouse sobre o terreno para ver as opções.  Para dividir um terreno, selecione a área a ser dividida e clique em &apos;Dividir&apos;.  Para juntar terrenos, selecione dois ou mais lotes adjacentes e clique em &apos;Juntar&apos;." name="land divide join"/>